package com.ruoyi.common.core.utils;


import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

public class UrDecoderlUtil {

    /**
     * 判断字符串是否是URL编码格式并进行解码
     *
     * @param input 要检查和解码的字符串
     * @return 如果字符串是URL编码的，返回解码后的字符串；否则，返回原字符串
     */
    public static String decodeIfEncoded(String input) {
        if (input == null) {
            return null;
        }

        try {
            // 检查字符串是否包含%字符，并尝试进行URL解码
            if (input.contains("%")) {
                String decoded = URLDecoder.decode(input, "UTF-8");
                // 验证解码后的字符串是否包含非法字符
                if (isValidDecodedString(decoded)) {
                    return decoded;
                }
            }
        } catch (UnsupportedEncodingException | IllegalArgumentException e) {
            // 如果发生UnsupportedEncodingException或IllegalArgumentException
            // 则返回原字符串，表示解码失败或不是有效的URL编码
        }

        return input;
    }

    /**
     * 验证解码后的字符串是否是合法的
     *
     * @param decoded 解码后的字符串
     * @return true 如果是合法的字符串；false 否则
     */
    private static boolean isValidDecodedString(String decoded) {
        // 在这里可以添加更多的验证逻辑
        // 例如，检查是否包含不可见字符，检查特定的格式等
        // 这个示例简单地检查是否解码后的字符串不是空
        return decoded != null && !decoded.isEmpty();
    }

    public static void main(String[] args) {

        System.out.println(   UrDecoderlUtil.decodeIfEncoded(  "你好"  ));
    }
}
